<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 1. 对象更新
    let obj = {
      name: "张三",
      age: 20,
      fn () {
        console.log("fn", this)
      },
      hobby () {
        console.log("喜欢篮球");
      }
    }
    // 方法都可以简写
    obj.fn();


    // 对象的键名 都会自动转成字符串
    // let myname = "李四";
    // let myage = "age";
    // let myobj = {};
    // let ele = document.querySelector(".box");
    // let obj = {
    //   myname: myname,
    //   [myage]: 20,
    //   [1 + 2]: "hello",
    //   [myobj]: "对象",
    //   [ele]: "red"
    // }
    // console.log(obj)
    // for (let key in obj) {
    //   console.log(typeof key); // string
    // }


    // 对象新增方法
    // 2.1  Object.is()   判断两个对象是否相等 返回的是布尔值

    // 2.2 Object.assign()  合并对象  相同键名会被覆盖 返回值 合并的新对象
    // 是一个浅拷贝

    // ... 扩展运算符 复制的对象或数组 也是浅拷贝

    // 2.3 Object.hasOwn  检查属性是否是对象自身的属性 es6
    // obj.hasOwnProperty('key') es5写法


    // 2.4 Object.keys() 获取对象所有键名到数组里
    // Object.vaules()  获取对象所有键值到数组里
    // 返回值 数组
    // let obj = {
    //   name: 'theshy',
    //   age: 18
    // }
    // console.log(Object.keys(obj));
    // console.log(Object.values(obj));


    // 2.5 Object.seal();可以把对象 边成不可配置对象



  </script>
</body>

</html>